# -*- coding: utf-8 -*-
"""
@Time ： 2022/7/21 21:40
@Auth ： Mr. William 1052949192
@Company ：特斯汀学院 @testingedu.com.cn
@Function ：快排
"""
height = [155, 187, 172, 160, 163, 166, 173, 182, 165, 159]
# height = [4, 1, 9, 7, 2, 5, 6, 8, 10, 3]


def quicksort(height, left, right):
    """
    快速排序的函数
    :param height: 列表
    :param left: 列表的左边
    :param right: 待排序列表的右边
    :return:
    """
    # 取最右边为基准
    base = height[right]
    # 指针初始位置
    l = left
    h = right

    while l < h:
        # 一轮交换
        # 只要l还在h的左边，就一直循环
        while l < h:
            # 从左往右找到比基准大的
            if height[l] > base:
                # 交换到h位置
                height[l], height[h] = height[h], height[l]
                h -= 1
                break
            else:
                # 如果没找到就继续找
                l += 1

        while l < h:
            # 从右往左找比基准小的
            if height[h] < base:
                # 交换到l位置
                height[l], height[h] = height[h], height[l]
                l += 1
                break
            else:
                # 如果没找到就继续找
                h -= 1

    # 递归调用直达，所有部分都只剩下一个或者0个元素
    if l-1-left > 0:
        # 对左边剩下的元素进行递归
        quicksort(height,left,l-1)

    if right - h - 1 > 0:
        # 对右边剩下的元素进行递归
        quicksort(height, h+1, right)


quicksort(height, 0, len(height) - 1)
print(height)


